The problem of writing error-free computer programs has plagued programmers since the beginning. Sophisticated schemes for automatically discovering program errors and bugs of all kinds, including lexical, syntactic, semantic and logical, have been developed. However, these schemes have generally been directed to enforcing adherence to concrete programming standards inherent in the definition of the programming language itself and not to more extrinsic quality-related concerns, such as language modularity, portability, testing costs and communications between different program modules in networked and distributed environments.
Most of software developers understand that the longer an error is allowed to remain in the software before it is discovered, the more expensive it becomes to fix. With vigilant testing from the earliest phases of the software lifecycle, software development teams find errors earlier and reduce the likelihood of discovering the error further down in the software lifecycle. Early detection reduces the cost of fixing each error, which in turn, reduces the cumulative cost of fixing the thousands of errors that typically surface in the course of a project. Considering the costs an organization would incur if even few errors were not found until late in the lifecycle, it is clear that early detection of errors yields a substantial cost benefit.
In addition to reducing development costs, error prevention can dramatically reduce maintenance costs, increase team efficiency, and facilitate the system/software changes that are required to stay competitive in today's market. By preventing errors, software development teams reduce the total quantity of errors that would increase the project costs further. When a team has an automated and comprehensive method for preventing errors throughout the lifecycle of the software product, the team typically prevents hundreds or even thousands of errors from occurring throughout a project. As a result, the team has significantly fewer errors to find and fix, which translates to reduced costs and a more rapid, efficient development process.
Error prevention not only reduces the total time and money required to find and fix defects, but also reduces the cost of change. Most applications need to change as the market and business requirements evolve. However, each change typically introduces errors, and the more errors that are in the code prior to a change, the more additional errors that change is likely to introduce. As a result, it is considerably more costly to change a project containing many errors than it is to change a similarly-sized project that is virtually error-free. Without error prevention, every change usually introduces a large number of errors that are costly to find and fix. However, if a team proactively prevents errors and detects errors as soon as they are introduced, each change is less costly and problematic; fewer errors need to be detected and fixed, and any new errors can be removed immediately, before they spawn additional errors. Because error prevention diminishes the need for debugging, traditionally the most costly and time-consuming part of the change process, increases linearly with the amount of code, rather than exponentially.
There are a variety of error prevention practices available to software developers, among them code reviews, coding standards, unit testing, regression testing, and load and functionality testing. Each of these practices is suited to automation. Software manufacturers committed to eradicating errors in their applications would need to create an Automated Error Prevention (AEP) system that addresses each of these practices as a separate stage within the software development lifecycle.
Therefore, there is a need for a system and method to automatically prevent errors during all stages of computer software lifecycle.